package cn.itsource.service.impl;

import cn.itsource.domain.User;
import cn.itsource.mapper.UserMapper;
import cn.itsource.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
/*

readOnly = true:只读
propagation：事务传播机制
propagation=Propagation.REQUIRED: 必须有事务   当A方法调用B方法的时候，B方法看A方法是否有事务，如果A方法有事务,B
        方法就加入A方法的事务，如果A方法没有事务，B方法自己会开启一个事务
propagation=Propagation.REQUIRES_NEW： 每次都新开一个事务      当A方法调用B方法   B方法配置的事务传播机制( propagation=Propagation.REQUIRES_NEW),
        不管A方法是否有事务，我B方法都新开一个新的事务
propagation=Propagation.NEVER：  绝对不能有事务       当A方法调用B方法，B方法配置的事务传播机制（propagation=Propagation.NEVER），
         A方法没有事务，正常运行，A方法有事务，直接报错
propagation=Propagation.SUPPORTS：支持    A方法调用B方法，B方法配置的事务传播机制(ropagation=Propagation.SUPPORTS)
          不管A方法有没有事务，我B方法都支持

*/
@Service
@Transactional(readOnly = true,propagation = Propagation.SUPPORTS)
public class UserServiceimpl implements IUserService {
    @Autowired
    private UserMapper mapper;

    @Override
    public void save(User user) {
        mapper.save(user);
    }

    @Override
    @Transactional
    public List<User> loadAll() {
        return mapper.loadAll();
    }
}
